package applicationAlibi;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import tables.JdbcAlibi;
import tables.JdbcCommentaire;
import tables.JdbcGroupe;
import tables.JdbcMessage;
import tables.JdbcUtilisateur;
import beans.Commentaire;
import beans.Message;
import beans.Utilisateur;

/**
 * Servlet implementation class gestionOnglet
 */
public class gestionOnglet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	public static String estConnecte = "non";
	public static String estPremium = "non";
	public static String membre = ""; // le pseudo du membre pour l'afficher
	// dans le cadre gauche

	public static Utilisateur utilisateur = null;

	public static String messageBienvenue = "Nous vous remercions de votre inscription à notre site";
	public static String motDePasseMembre = "";
	public static final String reussite = "Votre demande a bien ete prise en compte ! Merci de votre confiance.";
	public static final String erreurMDP = "Vous avez renseigne un faux mot de passe. Veuillez re-essayer";
	public static final String erreurPSEUDO = "Vous avez renseigne un faux pseudo. Veuillez re-essayer.";
	public static final String erreur_MDP_PSEUDO = "Veuillez renseigner votre pseudo et votre mot de passe.";
	public static int id_annonce_courant = 0;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public gestionOnglet() {
		super();

	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	@SuppressWarnings("unchecked")
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		String reussite = "Votre demande a bien ete prise en compte ! Merci de votre confiance";
		String option = request.getParameter("option");
		if (option == null) {
			option = "null";
		}
		// ************************************************************************//
		// la gestion des onglets (menu deroulant) //
		// ************************************************************************//

		if (option.equals("Accueil")) {
			request.setAttribute("estConnecte", estConnecte);
			System.out.println(estConnecte);
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("accueil.jsp").forward(request,
					response);
		}

		else if (option.equals("Recherche complice")) {
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("DemandeComplice.jsp").forward(
					request, response);
		}

		else if (option.equals("Etre complice")) {
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("complice.jsp").forward(request,
					response);
		}

		else if (option.equals("Envoyer une carte postale")) {
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("cartePostale.jsp").forward(request,
					response);
		}

		else if (option.equals("Envoyer un e-mail/sms")) {
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("sms_email.jsp").forward(request,
					response);
		}

		else if (option.equals("Autres alibis")) {
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("autresAlibis.jsp").forward(request,
					response);
		}

		else if (option.equals("Donnez votre avis")) {
			HashMap<String, String> avis = new HashMap<String, String>();

			String pseudo = "admin";
			ArrayList<String> coms = new ArrayList<String>();
			ArrayList<String> comentateur = new ArrayList<String>();

			ArrayList<String> table = new ArrayList<String>();
			table.add("commentaire");
			ArrayList<Object> cherche = new ArrayList<Object>();
			ArrayList<Object> trouve = new ArrayList<Object>();
			ArrayList<String> quoi = new ArrayList<String>();
			trouve.add("pseudo_a_h");
			cherche.add(pseudo);

			int nbres = 0;
			try {
				Object[] r = JdbcAlibi.recherche(quoi, table, trouve, cherche);

				coms = (ArrayList<String>) r[2];
				comentateur = (ArrayList<String>) r[3];
				coms.remove(0);
				comentateur.remove(0);
				nbres = ((ArrayList<Object>) r[0]).size() - 1;

			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			for (int i = 0; i < nbres; i++) {
				avis.put(comentateur.get(i), coms.get(i));
			}
			String nbres1=((Integer) nbres).toString();
			request.setAttribute("nbres", nbres1);
			request.setAttribute("avis", avis);
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("avis.jsp").forward(request, response);
		}

		else if (option.equals("Consulter votre profil")) {
			// les informations du membre

			// faire la recherche dans la BDD a partir de membre qui contient le
			// pseudo du membre connecte

			Utilisateur mem = new Utilisateur();
			try {
				mem = JdbcUtilisateur.findByPK(membre);
			} catch (Exception e) {
				System.out.println("erreur : " + e);
			}
			String nom = mem.getNom();
			String prenom = mem.getPrenom();
			String jour = mem.getJour();
			String mois = mem.getMois();
			String an = mem.getAn();
			String note = mem.getNote();
			String telephone = mem.getTelephone();
			String email = mem.getEmail();
			String adresse = mem.getAdresse();
			String ville = mem.getVille();
			String orientation = mem.getOrientation();
			String statut = mem.getStatut();
			String taille = "" + mem.getTaille();
			String cheveux = mem.getCouleur_cheveux();
			String yeux = mem.getCouleur_yeux();
			String cheminPhoto = mem.getPhoto();

			request.setAttribute("nom", nom);
			request.setAttribute("prenom", prenom);
			request.setAttribute("jour", jour);
			request.setAttribute("mois", mois);
			request.setAttribute("an", an);
			request.setAttribute("telephone", telephone);
			request.setAttribute("note", note);
			request.setAttribute("email", email);
			request.setAttribute("adresse", adresse);
			request.setAttribute("ville", ville);
			request.setAttribute("orientation", orientation);
			request.setAttribute("statut", statut);
			request.setAttribute("taille", taille);
			request.setAttribute("cheveux", cheveux);
			request.setAttribute("yeux", yeux);
			request.setAttribute("cheminPhoto", cheminPhoto);

			// redirection vers le profil du membre
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("profilMembre.jsp").forward(request,
					response);
		}

		else if (option.equals("Message recus")) {

			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("message1.jsp").forward(request,
					response);
		}

		String connect = request.getParameter("connexion"); // depuis la page
		// d'accueil
		String creerCompte = request.getParameter("creerCompte"); // depuis la
		// page
		// d'accueil
		String deconnect = request.getParameter("deconnexion"); // redirection
		// vers la page
		// d'accueil

		if (creerCompte == null) {
			creerCompte = "null";
		}
		if (connect == null) {
			connect = "null";
		}
		if (deconnect == null) {
			deconnect = "null";
		}

		// **************************************************************//
		// La connexion d'un membre (cadre gauche) //
		// **************************************************************//

		if (connect.equals("connexion")) {
			String pseudo = request.getParameter("pseudonyme");
			String mdp = request.getParameter("motDePasse");
			if (pseudo == "" || mdp == "") { // si on ne renseigne pas le mot de
				// passe ou l'utilisateur
				estConnecte = "non";
				request.setAttribute("erreur", erreur_MDP_PSEUDO);
			} else {
				membre = pseudo;
				try {
					utilisateur = JdbcUtilisateur.findByPK(membre);
				} catch (SQLException e1) {
					e1.printStackTrace();
				} catch (ClassNotFoundException e1) {
					e1.printStackTrace();
				}
				// verifier que le pseudo existe dans la BDD

				boolean existe = false;
				try {
					existe = !JdbcUtilisateur.pseudoLibre(membre);
				} catch (Exception e) {
					System.out.println("_X__erreur pseudolibre :" + e);
				}

				// recuperer le mot de passe de la BDD et le comparer a mdp
				String mdp_bd = "";
				if (existe) { // si le membre existe
					try {
						mdp_bd = JdbcUtilisateur.findByPK(membre)
								.getMot_de_passe();
					} catch (Exception e) {
						System.out.println("erreur :" + e);
						request.setAttribute("estPremium", "non");
						request.setAttribute("estConnecte", "non");
						request.getRequestDispatcher("accueil.jsp").forward(
								request, response);
					}

					// si mot de passe juste
					motDePasseMembre = mdp;
					if (motDePasseMembre.equals(mdp_bd)) {

						estConnecte = "oui";
					} else {// erreur mot de passe
						estConnecte = "non";
						request.setAttribute("erreur", erreurMDP);
					}
					// le membre est-il premium ? recherche dans la BDD
					try {
						// le membre est-il premium ? recherche dans la BDD
						boolean premium = JdbcGroupe.existe(pseudo, "premium");
						if (premium) {
							estPremium = "oui";
						} else {
							estPremium = "non";
						}

					} catch (SQLException e) {
						e.printStackTrace();
					} catch (ClassNotFoundException e) {
						e.printStackTrace();
					}
				}

				else {
					// erreur pseudo
					estConnecte = "non";
					request.setAttribute("erreur", erreurPSEUDO);
				}
			}

			// sans bd a sup //
			// estPremium = "oui"; //
			// sans bd a sup //
			request.setAttribute("membre", membre);
			request.setAttribute("estConnecte", estConnecte);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("accueil.jsp").forward(request,
					response);
		}

		// *********************************************** //
		// demande de creation de compte //
		// *********************************************** //

		else if (creerCompte.equals("creez un compte")) {

			request.getRequestDispatcher("creationCompte.jsp").forward(request,
					response);
		}

		// ********************************************************//
		// la deconnexion //
		// ******************************************************* //

		else if (deconnect.equals("deconnexion")) {
			estConnecte = "non";
			estPremium = "non";
			membre = "";
			utilisateur = null;
			motDePasseMembre = "";
			request.setAttribute("estPremium", estPremium);
			request.setAttribute("estConnecte", estConnecte);
			request.getRequestDispatcher("accueil.jsp").forward(request,
					response);
		}

		// *********************************************************//
		// le service de carte postale //
		// *********************************************************//

		String choixCarte = request.getParameter("choixCarte");

		if (choixCarte == null) {
			choixCarte = "null";
		}
		if (choixCarte.equals("Valider mon choix")) {
			// on recupere les donnees
			String choix = request.getParameter("cartePostale");
			if (choix.equals("autre"))
				choix = request.getParameter("cartePostaleAutre");

			// pour le message recapitulatif;
			String day = request.getParameter("day");
			String month = request.getParameter("month");
			String year = request.getParameter("year");
			String adresseDest = request.getParameter("adresseDest");

			// on cree l'alibi a mettre dans la BDD (et on cree le message
			// recapitulatif ?)
			String date_a = JdbcCommentaire.convertDate(new Date(Integer
					.parseInt(year), Integer.parseInt(month), Integer
					.parseInt(day)));
			String role = "voyage";
			String dispo_sem = "";
			String dispo_jour = "";
			String type_service = "carte_postale";
			String ville_origine = choix;
			String details = "";
			boolean demande = true;
			try {
				JdbcAlibi.addAlibi(JdbcAlibi.lastid(), membre, date_a,
						dispo_sem, dispo_jour, type_service, ville_origine,
						role, details, demande); // insertion dans la BDD
			} catch (SQLException e) {
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}

			// on redirige vers cartePostale avec message de reussite
			request.setAttribute("reussite", reussite);
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("cartePostale.jsp").forward(request,
					response);

		}

		/*
		 * String choixCarte = request.getParameter("choixCarte");
		 * 
		 * if (choixCarte == null) { choixCarte = "null"; } if
		 * (choixCarte.equals("Valider mon choix")) { // on recupere les donnees
		 * String choix = request.getParameter("cartePostale");
		 * 
		 * // pour le message recapitulatif; String day =
		 * request.getParameter("day"); String month =
		 * request.getParameter("month"); String year =
		 * request.getParameter("year"); String adresseDest =
		 * request.getParameter("adresseDest");
		 * 
		 * // on cree l'alibi a mettre dans la BDD (et on cree le message //
		 * recapitulatif ?) Date date_a = Calendar.getInstance().getTime(); //
		 * date de creation // annonce ou date // de realisation ? TypeService
		 * type = TypeService.CARTEPOSTALE; String role = "voyage"; String
		 * ville_o = choix; Object[] s = { id_annonce_courant, membre, date_a,
		 * type, ville_o, role }; id_annonce_courant++; try {
		 * JdbcAlibi.insere(s); // insertion dans la BDD } catch (SQLException
		 * e) { e.printStackTrace(); } catch (ClassNotFoundException e) {
		 * e.printStackTrace(); }
		 * 
		 * // on redirige vers cartePostale avec message de reussite
		 * request.setAttribute("reussite", reussite);
		 * request.setAttribute("membre", membre);
		 * request.setAttribute("estPremium", estPremium);
		 * request.getRequestDispatcher("cartePostale.jsp").forward(request,
		 * response);
		 * 
		 * }
		 */
		// **********************************************************//
		// recherche d'un complice //
		// **********************************************************//

		String demandeAlibi = request.getParameter("validerProposition");
		if (demandeAlibi == null) {
			demandeAlibi = "null";
		}
		if (demandeAlibi.equals("Valider mes choix")) {

			/****************************************************/
			// recuperer les differents roles demandés et inscrire l'annonce
			// dans la BD
			String role = request.getParameter("action");
			String dispo_s = request.getParameter("PropositionDate");
			String dispo_j = request.getParameter("PropositionMoment");
			String date_a = JdbcCommentaire.convertDate(new Date());
			String type_service = "rencontre";
			String details = "";
			boolean demande = true;
			String ville_origine = "";
			try {
				ville_origine = JdbcUtilisateur.findByPK(membre).getVille();
			} catch (Exception e) {
				System.out.println("_X__ erreur:");
			}

			try {
				JdbcAlibi.addAlibi(JdbcAlibi.lastid(), membre, date_a, dispo_s,
						dispo_j, type_service, ville_origine, role, details,
						demande);
			} catch (Exception e) {
				System.out.println("_X__ erreur: " + e);
			}

			// faire la recherche d'alibi humain

			ArrayList<Utilisateur> util, util2, util3;
			try {
				util = JdbcAlibi.chercheAlibiH(
						request.getParameter("typePersonne"), role, dispo_s,
						dispo_j);
				util2 = JdbcAlibi.chercheAlibiH(
						request.getParameter("typePersonne"), role,
						"tout le temps", dispo_j);
				util3 = JdbcAlibi.chercheAlibiH(
						request.getParameter("typePersonne"), role, dispo_s,
						"tout le temps");
			} catch (Exception e) {
				System.out.println("_X__ erreur chercheAlibiH: " + e);
				util = new ArrayList<Utilisateur>();
				util2 = new ArrayList<Utilisateur>();
				util3 = new ArrayList<Utilisateur>();
			}
			util.addAll(util2);
			System.out.println("::::::::::::::" + util.size());

			util.addAll(util3);

			int nbres = util.size();

			request.setAttribute("resultat", util);
			request.setAttribute("nbres", Integer.toString(nbres));

			// recup�rer les choix effectu�s

			// redirection vers liste de resultat de la demande
			// ouverture des fiches clients dans un nouvel objet
			// transmettre les resultats de la recherche ---> les membres
			// correspondant

			Utilisateur mem = new Utilisateur();
			try {
				mem = JdbcUtilisateur.findByPK(membre);
			} catch (Exception e) {
				System.out.println("erreur:" + e);
			}
			String firstPosition = mem.getAdresse() + ", " + mem.getVille();
			ArrayList<String> position = new ArrayList<String>();
			for (Utilisateur u : util) {
				position.add(u.getAdresse() + "," + u.getVille());
			}
			position.add("grande rue saint michel, Toulouse");
			position.add("rue Sylvain Dauriac, Toulouse");
			position.add("rue de Saint Rome, Toulouse ");

			request.setAttribute("position", position);
			request.setAttribute("firstPosition", firstPosition);
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("listeResultat.jsp").forward(request,
					response);

		}

		// **************************************************************//
		// voir ou ecrire un commentaire sur un membre //
		// **************************************************************//

		// Ajouter un Commentaire
		String coments = request.getParameter("ajouterCommentaire");

		if (coments == null) {
			coments = "null";
		}

		if (coments.equals("Ajouter")) {

			request.setAttribute("membre", membre);

			int note = Integer.parseInt(request.getParameter("note"));
			String com1 = request.getParameter("comment");
			GregorianCalendar d = new GregorianCalendar();
			Date da = d.getTime();
			String pseudo = request.getParameter("pseudo");
			Commentaire com = new Commentaire();
			com.setCommentaire(com1);
			com.setDate(da);
			com.setNote(note);
			com.setPseu_alibi(pseudo);
			com.setPseu_user(membre);
			try {
				JdbcCommentaire.insere(com);
			} catch (SQLException e) {
				e.printStackTrace();
			} catch (ClassNotFoundException e) {

				e.printStackTrace();
			}
			//request.setAt("pseudo",pseudo);

			request.getRequestDispatcher("accueil.jsp").forward(request,
					response);
		}

		// ***************************************************//
		// modification des parametres d'un compte //
		// ***************************************************//
		String modificationCompte = request
				.getParameter("changement_parametre");
		String validerModification = request
				.getParameter("validerModification");
		if (validerModification == null) {
			validerModification = "null";
		}
		if (modificationCompte == null) {
			modificationCompte = "null";
		}

		if (modificationCompte.contains("paramètres du compte")) {
			// transmettre les infos pour que les champs sont pre-remplis avec
			// les infos de base du membre courant

			Utilisateur mem = new Utilisateur();
			try {
				mem = JdbcUtilisateur.findByPK(membre);
			} catch (Exception e) {
				System.out.println("erreur:" + e);
			}

			request.setAttribute("telephone", mem.getTelephone());
			request.setAttribute("email", mem.getEmail());
			request.setAttribute("adresse", mem.getAdresse());
			request.setAttribute("ville", mem.getVille());
			request.setAttribute("orientation", mem.getOrientation());
			request.setAttribute("statut", mem.getStatut());
			request.setAttribute("cheveux", mem.getCouleur_cheveux());

			// redirection vers le formulaire de modification
			request.setAttribute("estPremium", estPremium);
			request.setAttribute("membre", membre);
			request.getRequestDispatcher("modificationCompte.jsp").forward(
					request, response);
		}

		if (validerModification.equals("Valider modification")) {
			// on recupere les donnees du formulaire
			String telephone = request.getParameter("telephone");
			String email = request.getParameter("email");
			String adresse = request.getParameter("adresse");
			String ville = request.getParameter("ville");
			String orientation = request.getParameter("orientation");
			String statut = request.getParameter("statut");
			String cheveux = request.getParameter("cheveux");

			// mise a jour des premieres informations
			try {
				JdbcUtilisateur.maj_coordonnees(membre, ville, adresse, email,
						telephone);
				JdbcUtilisateur.maj_statut(membre, statut);
				JdbcUtilisateur.maj_orientation(membre, orientation);
				JdbcUtilisateur.maj_ch(membre, cheveux);

			} catch (Exception e) {
				System.out.println("erreur maj: " + e);
				request.getRequestDispatcher("modificationCompte.jsp").forward(
						request, response);
			}

			// changement de mot de passe ou pas ?!
			String ancienMotDePasse = request.getParameter("ancienMotDePasse");
			String nouveauMotDePasse = request
					.getParameter("nouveauMotDePasse");
			String nouveauMotDePasse2 = request
					.getParameter("nouveauMotDePasse2");

			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);

			// si on souhaite changer les mdp
			if (!ancienMotDePasse.equals("")) {
				// si mot de passe faux redirection vers la page de modification
				Utilisateur mem = new Utilisateur();
				try {
					mem = JdbcUtilisateur.findByPK(membre);
				} catch (Exception e) {
					System.out.println("erreur:" + e);
				}

				mem.getMot_de_passe();
				if ((!mem.equals(ancienMotDePasse))
						|| (!nouveauMotDePasse.equals(nouveauMotDePasse2))) {
					request.setAttribute("erreur", erreurMDP);
					request.getRequestDispatcher("modificationCompte.jsp")
							.forward(request, response);
				}
				// sinon redirection vers page le profil du membre et mise a
				// jour de la BDD
				else if ((mem.getMot_de_passe().equals(ancienMotDePasse))
						&& (nouveauMotDePasse.equals(nouveauMotDePasse2))) {
					try {
						JdbcUtilisateur.maj_mdp(membre, nouveauMotDePasse);
					} catch (Exception e) {
						System.out.println("erreur maj: " + e);
						request.getRequestDispatcher("modificationCompte.jsp")
								.forward(request, response);
					}

					String nom = mem.getNom();
					String prenom = mem.getPrenom();
					String jour = mem.getJour();
					String mois = mem.getMois();
					String an = mem.getAn();
					String note = mem.getNote();
					telephone = mem.getTelephone();
					email = mem.getEmail();
					adresse = mem.getAdresse();
					ville = mem.getVille();
					orientation = mem.getOrientation();
					statut = mem.getStatut();
					String taille = "" + mem.getTaille();
					cheveux = mem.getCouleur_cheveux();
					String yeux = mem.getCouleur_yeux();
					String cheminPhoto = mem.getPhoto();

					request.setAttribute("nom", nom);
					request.setAttribute("prenom", prenom);
					request.setAttribute("jour", jour);
					request.setAttribute("mois", mois);
					request.setAttribute("an", an);
					request.setAttribute("telephone", telephone);
					request.setAttribute("note", note);
					request.setAttribute("email", email);
					request.setAttribute("adresse", adresse);
					request.setAttribute("ville", ville);
					request.setAttribute("orientation", orientation);
					request.setAttribute("statut", statut);
					request.setAttribute("taille", taille);
					request.setAttribute("cheveux", cheveux);
					request.setAttribute("yeux", yeux);

					request.getRequestDispatcher("profilMembre.jsp").forward(
							request, response);
				}

			} else {
				Utilisateur mem = new Utilisateur();

				try {
					mem = JdbcUtilisateur.findByPK(membre);
				} catch (Exception e) {
					System.out.println("erreur:" + e);
				}

				String nom = mem.getNom();
				String prenom = mem.getPrenom();
				String jour = mem.getJour();
				String mois = mem.getMois();
				String an = mem.getAn();
				String note = mem.getNote();
				telephone = mem.getTelephone();
				email = mem.getEmail();
				adresse = mem.getAdresse();
				ville = mem.getVille();
				orientation = mem.getOrientation();
				statut = mem.getStatut();
				String taille = "" + mem.getTaille();
				cheveux = mem.getCouleur_cheveux();
				String yeux = mem.getCouleur_yeux();

				request.setAttribute("nom", nom);
				request.setAttribute("prenom", prenom);
				request.setAttribute("jour", jour);
				request.setAttribute("mois", mois);
				request.setAttribute("an", an);
				request.setAttribute("telephone", telephone);
				request.setAttribute("note", note);
				request.setAttribute("email", email);
				request.setAttribute("adresse", adresse);
				request.setAttribute("ville", ville);
				request.setAttribute("orientation", orientation);
				request.setAttribute("statut", statut);
				request.setAttribute("taille", taille);
				request.setAttribute("cheveux", cheveux);
				request.setAttribute("yeux", yeux);

				request.setAttribute("membre", membre);
				request.setAttribute("estPremium", estPremium);
				request.getRequestDispatcher("profilMembre.jsp").forward(
						request, response);
			}
		}

		// ***************************************************//
		// service de sms et d'email // Ajouter lettre ...
		// ***************************************************//

		String sms = request.getParameter("validerSms");
		String email = request.getParameter("validerEmail");

		if (sms == null) {
			sms = "null";
		}

		if (email == null) {
			email = "null";
		}

		if (sms.equals("Valider")) {
			// on recupere les donnees
			String year = request.getParameter("year");
			String month = request.getParameter("month");
			String day = request.getParameter("day");

			String heure = request.getParameter("heure");
			String minute = request.getParameter("minute");

			String date_a = year + "-" + month + "-" + day + " " + heure + ":"
					+ minute + ":"
					+ (new GregorianCalendar()).get(Calendar.SECOND);

			boolean demande = true;
			String motifSms = request.getParameter("motifSms");

			if (motifSms != null) {
				if (motifSms.equals("conference")) {
					String jourC = request.getParameter("jourC");
					String lieuC = request.getParameter("lieuC");
					if (lieuC != null && jourC != null) {
						// on cree l'alibi et on cree le message recapitulatif
						String detail = "Vous êtes cordialement invité à assister à notre conférence ayant lieu le "
								+ jourC
								+ " à "
								+ lieuC
								+ " .Nous espérons que vous répondrez présent.";
						try {
							JdbcAlibi.addAlibi(JdbcAlibi.lastid(), membre,
									date_a, "", "", "sms", "", "", detail,
									demande);
						} catch (SQLException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (ClassNotFoundException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						// redirection vers la meme page avec message reussite
						request.setAttribute("reussite", reussite);
						request.setAttribute("estPremium", estPremium);
						request.setAttribute("membre", membre);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);

					} else {
						// transmettre l'erreur
						String erreur = "Vous avez choisi"
								+ motifSms
								+ " vous devez saisir tous les champs correspondants";
						request.setAttribute("erreur", erreur);
						request.setAttribute("membre", membre);
						request.setAttribute("estPremium", estPremium);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);
					}
				} else if (motifSms.equals("seminaire")) {
					String jourDS = request.getParameter("jourDS");
					String jourFS = request.getParameter("jourFS");
					String lieuS = request.getParameter("lieuS");
					if (jourDS != null && jourFS != null && lieuS != null) {
						// on cree l'alibi et on cree le message recapitulatif
						String detail = "Vous êtes cordialement invité à assister au séminaire ayant lieu du "
								+ jourDS
								+ " au "
								+ jourFS
								+ " à "
								+ lieuS
								+ " .Nous espérons que vous répondrez présent.";
						try {
							JdbcAlibi.addAlibi(JdbcAlibi.lastid(), membre,
									date_a, "", "", "sms", "", "", detail,
									demande);
						} catch (SQLException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (ClassNotFoundException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						// redirection vers la meme page avec message reussite
						request.setAttribute("reussite", reussite);
						request.setAttribute("estPremium", estPremium);
						request.setAttribute("membre", membre);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);
					} else {
						// transmettre l'erreur
						String erreur = "Vous avez choisi"
								+ motifSms
								+ " vous devez saisir tous les champs correspondants";
						request.setAttribute("erreur", erreur);
						request.setAttribute("membre", membre);
						request.setAttribute("estPremium", estPremium);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);
					}
				} else if (motifSms.equals("perso")) {
					String smsPerso = request.getParameter("smsPerso");
					if (smsPerso != null) {
						// on cree l'alibi et on cree le message recapitulatif
						try {
							JdbcAlibi.addAlibi(JdbcAlibi.lastid(), membre,
									date_a, "", "", "sms", "", "", smsPerso,
									demande);
						} catch (SQLException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (ClassNotFoundException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						// redirection vers la meme page avec message reussite
						request.setAttribute("reussite", reussite);
						request.setAttribute("estPremium", estPremium);
						request.setAttribute("membre", membre);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);

					} else {
						// on transmet l'erreur
						String erreur = "Vous avez choisi un sms personnalisé, vous devez saisir votre texte";
						request.setAttribute("erreur", erreur);
						request.setAttribute("membre", membre);
						request.setAttribute("estPremium", estPremium);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);
					}
				}
			}

		} else if (email.equals("Valider")) {
			// on recupere les donnees
			String year = request.getParameter("year");
			String month = request.getParameter("month");
			String day = request.getParameter("day");

			String heure = request.getParameter("heure");
			String minute = request.getParameter("minute");

			String date_a = year + "-" + month + "-" + day + " " + heure + ":"
					+ minute + ":"
					+ (new GregorianCalendar()).get(Calendar.SECOND);

			boolean demande = true;

			String motifEmail = request.getParameter("motifEmail");

			if (motifEmail != null) {
				if (motifEmail.equals("conference")) {
					String jourC = request.getParameter("jourC");
					String lieuC = request.getParameter("lieuC");
					if (lieuC != null && jourC != null) {
						// on cree l'alibi et on cree le message recapitulatif
						String detail = "Vous êtes cordialement invité à assister à notre conférence ayant lieu le "
								+ jourC
								+ " à "
								+ lieuC
								+ " .Nous espérons que vous répondrez présent.";
						try {
							JdbcAlibi.addAlibi(JdbcAlibi.lastid(), membre,
									date_a, "", "", "email", "", "", detail,
									demande);
						} catch (SQLException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (ClassNotFoundException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						// redirection vers la meme page avec message reussite
						request.setAttribute("reussite", reussite);
						request.setAttribute("membre", membre);
						request.setAttribute("estPremium", estPremium);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);
					} else {
						// transmettre l'erreur
						String erreur = "Vous avez choisi"
								+ motifEmail
								+ " vous devez saisir tous les champs correspondants";
						request.setAttribute("erreur", erreur);
						request.setAttribute("membre", membre);
						request.setAttribute("estPremium", estPremium);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);
					}
				} else if (motifEmail.equals("seminaire")) {
					String jourDS = request.getParameter("jourDS");
					String jourFS = request.getParameter("jourFS");
					String lieuS = request.getParameter("lieuS");
					if (jourDS != null && jourFS != null && lieuS != null) {
						// on cree l'alibi et on cree le message recapitulatif
						String detail = "Vous êtes cordialement invité à assister au séminaire ayant lieu du "
								+ jourDS
								+ " au "
								+ jourFS
								+ " à "
								+ lieuS
								+ " .Nous espérons que vous répondrez présent.";
						try {
							JdbcAlibi.addAlibi(JdbcAlibi.lastid(), membre,
									date_a, "", "", "email ", "", "", detail,
									demande);
						} catch (SQLException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (ClassNotFoundException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						// redirection vers la meme page avec message reussite
						request.setAttribute("reussite", reussite);
						request.setAttribute("membre", membre);
						request.setAttribute("estPremium", estPremium);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);

					} else {
						// transmettre l'erreur
						String erreur = "Vous avez choisi"
								+ motifEmail
								+ " vous devez saisir tous les champs correspondants";
						request.setAttribute("erreur", erreur);
						request.setAttribute("membre", membre);
						request.setAttribute("estPremium", estPremium);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);
					}
				} else if (motifEmail.equals("perso")) {
					String emailPerso = request.getParameter("emailPerso");
					if (emailPerso != null) {
						// on cree l'alibi et on cree le message recapitulatif
						try {
							JdbcAlibi.addAlibi(JdbcAlibi.lastid(), membre,
									date_a, "", "", "email", "", "",
									emailPerso, demande);
						} catch (SQLException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						} catch (ClassNotFoundException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						// redirection vers la meme page avec message reussite
						request.setAttribute("reussite", reussite);
						request.setAttribute("membre", membre);
						request.setAttribute("estPremium", estPremium);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);
					} else {
						// on transmet l'erreur
						String erreur = "Vous avez choisi un sms personnalisé, vous devez saisir votre texte";

						request.setAttribute("erreur", erreur);
						request.setAttribute("membre", membre);
						request.setAttribute("estPremium", estPremium);
						request.getRequestDispatcher("sms_email.jsp").forward(
								request, response);
					}
				}
			}
		}

		// ****************************************************** //
		// devenir membre Premium //
		// ****************************************************** //

		String validerPremium = request.getParameter("validerPremium");

		if (validerPremium == null) {
			validerPremium = "null";
		}

		if (validerPremium.equals("Valider ma souscription")) {
			// si le mot de passe est le bon
			String mdp = request.getParameter("motDePasse");
			if (mdp.equals(motDePasseMembre)) {
				// le membre devient premium
				estPremium = "oui";

				try {
					JdbcGroupe.addgrp(membre, "premium"); // maj de la BDD, on
					// ajoute le membre
					// au groupe premium
				} catch (SQLException e) {
					e.printStackTrace();
				} catch (ClassNotFoundException e) {
					e.printStackTrace();
				}

				// redirection
				request.setAttribute("membre", membre);
				request.setAttribute("estConnecte", estConnecte);
				request.setAttribute("estPremium", estPremium);
				request.getRequestDispatcher("accueil.jsp").forward(request,
						response);
			} else {
				request.setAttribute("membre", membre);
				request.setAttribute("fauxMotDePasse", "oui");
				request.setAttribute("estConnecte", estConnecte);
				request.setAttribute("estPremium", estPremium);
				request.getRequestDispatcher("accueil.jsp").forward(request,
						response);
			}

		}

		// ****************************************************** //
		// proposer un(des) alibi(s) //
		// ****************************************************** //

		String VP = request.getParameter("validerProposition");
		if (VP == null)
			VP = "";

		if (VP.equals("Valider mon choix")) {

			// recuperer les différents roles proposé
			ArrayList<String> prop = new ArrayList<String>();
			for (int i = 1; i < 7; i++) {
				if (request.getParameter("propositionRole" + i) != null)
					prop.add(request.getParameter("propositionRole" + i));
			}

			// recuperer quel dispo dans la semaine:
			String disposem;
			if (request.getParameter("propositionDate1") != null) {
				disposem = "tout le temps";
			} else if (request.getParameter("propositionDate2") != null) {
				disposem = "week-end";
			} else
				disposem = "semaine";

			// recuperer les différentes possibilités dans la journée!
			ArrayList<String> djr = new ArrayList<String>();
			for (int i = 1; i < 9; i++) {
				if (request.getParameter("propositionDate" + i) != null)
					djr.add(request.getParameter("propositionDate" + i));
			}

			String date = JdbcCommentaire.convertDate(new Date());
			String ville_o = "";
			try {
				ville_o = JdbcUtilisateur.findByPK(membre).getVille();
			} catch (Exception e) {
				System.out.println("_X__erreur :" + e);
				request.getRequestDispatcher("complice.jsp").forward(request,
						response);
			}

			String date_a = JdbcCommentaire.convertDate(new Date());
			String type_service = "rencontre";
			String details = "";
			boolean demande = false;
			String ville_origine = "";
			try {
				ville_origine = JdbcUtilisateur.findByPK(membre).getVille();
			} catch (Exception e) {
				System.out.println("erreur findByPK dans proposition alibi:"
						+ e);
				ville_origine = "inconnu";
			}

			// création des divers alibis. soit tous, soit aucun.
			try {
				for (int i = 0; i < prop.size(); i++)
					for (int j = 0; j < djr.size(); j++)
						JdbcAlibi.addAlibi(JdbcAlibi.lastid(), membre, date_a,
								disposem, djr.get(j), type_service,
								ville_origine, prop.get(i), details, demande);
			} catch (Exception e) {
				System.out.println("_X__erreur :" + e);
				request.getRequestDispatcher("complice.jsp").forward(request,
						response);
			}
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.setAttribute("estConnecte", estConnecte);
			request.getRequestDispatcher("accueil.jsp").forward(request,
					response);


		}

		// ****************************************************** //
		// donner son avis sur le site //
		// ****************************************************** //

		String validerAvis = request.getParameter("validerAvis");

		if (validerAvis == null) {
			validerAvis = "null";
		}

		if (validerAvis.equals("Valider")) {

			String votreAvis = request.getParameter("votreAvis");
			/*
			 * if (avis.containsKey(membre)) { avis.remove(membre); // on enleve
			 * le commentaire // un seul commentaire par membre }
			 */

			GregorianCalendar d = new GregorianCalendar();
			Date da = d.getTime();
			Commentaire com = new Commentaire();
			com.setCommentaire(votreAvis);
			com.setDate(da);
			com.setNote(0);
			com.setPseu_alibi("admin");
			com.setPseu_user(membre);
			try {
				JdbcCommentaire.insere(com);
			} catch (SQLException e) {
				e.printStackTrace();
			} catch (ClassNotFoundException e) {

				e.printStackTrace();
			}

			HashMap<String, String> avis = new HashMap<String, String>();

			ArrayList<String> coms = new ArrayList<String>();
			ArrayList<String> comentateur = new ArrayList<String>();

			ArrayList<String> table = new ArrayList<String>();
			table.add("commentaire");
			ArrayList<Object> cherche = new ArrayList<Object>();
			ArrayList<Object> trouve = new ArrayList<Object>();
			ArrayList<String> quoi = new ArrayList<String>();
			trouve.add("pseudo_a_h");
			cherche.add("admin");

			int nbres = 0;
			try {

				Object[] r = JdbcAlibi.recherche(quoi, table, trouve, cherche);

				coms = (ArrayList<String>) r[2];
				comentateur = (ArrayList<String>) r[3];
				coms.remove(0);
				comentateur.remove(0);
				nbres = ((ArrayList<Object>) r[0]).size() - 1;
				System.out.println(nbres);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			for (int i = 0; i < nbres; i++) {
				avis.put(comentateur.get(i), coms.get(i));
			}
			String nbres1=((Integer) nbres).toString();
			request.setAttribute("nbres", nbres1);
			request.setAttribute("avis", avis);
			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("avis.jsp").forward(request, response);
		}

		

		// ****************************************************** //
		// signaler un abus sur un avis //
		// ****************************************************** //

		// recuperer le name des boutons (en fonction de la hashmap avis)

		// ****************************************************** //
		// generation d'une facture //
		// ****************************************************** //
		String generationFacture = request.getParameter("generationFacture");
		if (generationFacture == null) {
			generationFacture = "null";
		}

		if (generationFacture.equals("generer le document")) {
			// System.out.println("facture");
			Utilisateur mem = new Utilisateur();
			try {
				mem = JdbcUtilisateur.findByPK(membre);
			} catch (Exception e) {
				System.out.println("erreur:" + e);
			}

			// on recupere les informations
			String nomEntreprise = request.getParameter("nomEntreprise");
			String adresseEntreprise = request
					.getParameter("adresseEntreprise");
			String codePostalEntreprise = request
					.getParameter("codePostalEntreprise");
			String villeEntreprise = request.getParameter("villeEntreprise");
			String year = request.getParameter("year");
			String month = request.getParameter("month");
			String day = request.getParameter("day");
			String produit1 = request.getParameter("produit1");
			String produit2 = request.getParameter("produit2");
			String produit3 = request.getParameter("produit3");
			String produit4 = request.getParameter("produit4");
			String produit5 = request.getParameter("produit5");
			String TVA1 = request.getParameter("TVA1");
			String TVA2 = request.getParameter("TVA2");
			String TVA3 = request.getParameter("TVA3");
			String TVA4 = request.getParameter("TVA4");
			String TVA5 = request.getParameter("TVA5");
			String p1 = request.getParameter("prix1");
			String p2 = request.getParameter("prix2");
			String p3 = request.getParameter("prix3");
			String p4 = request.getParameter("prix4");
			String p5 = request.getParameter("prix5");
			String qt1 = request.getParameter("quantite1");
			String qt2 = request.getParameter("quantite2");
			String qt3 = request.getParameter("quantite3");
			String qt4 = request.getParameter("quantite4");
			String qt5 = request.getParameter("quantite5");

			String nom = mem.getNom();
			String prenom = mem.getPrenom();
			String adresse = mem.getAdresse();
			String ville = mem.getVille();

			@SuppressWarnings("unused")
			generationFacturePDF facture = new generationFacturePDF(
					nomEntreprise, adresseEntreprise, villeEntreprise,
					codePostalEntreprise, year, month, day, produit1, produit2,
					produit3, produit4, produit5, TVA1, TVA2, TVA3, TVA4, TVA5,
					nom, prenom, adresse, ville, qt2, qt1, qt3, qt4, qt5, p1,
					p2, p3, p4, p5);

			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("autresAlibis.jsp").forward(request,
					response);
		}
		// ****************************************************** //
		// envoi de message
		// ****************************************************** //
		String Envoimess = request
		.getParameter("EnvoyerMess");
		if (Envoimess == null) {
			Envoimess = "null";
		}

		if (Envoimess.equals("Envoyer")) {

			String pseudo = request.getParameter("pseudo");
			String mess = request.getParameter("message");
			Message m=new Message();

			GregorianCalendar d = new GregorianCalendar();
			Date da = d.getTime();
			m.setDate(da);

			m.setDestinataire(pseudo);
			m.setExpediteur(membre);
			m.setMessage(mess);
			System.out.println("ou");
			try {
				JdbcMessage.insere(m);
				System.out.println("ou");
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				System.out.println("oula");
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("oula2");

			}
			
			request.setAttribute("membre", membre);

			request.getRequestDispatcher("message1.jsp").forward(request, response);		
		}
		
		
		// ****************************************************** //
		// generation d'une convocation //
		// ****************************************************** //
		String generationConvocation = request
				.getParameter("generationConvocation");
		if (generationConvocation == null) {
			generationConvocation = "null";
		}

		if (generationConvocation.equals("generer le document")) {
			System.out.println("convocation");
			// Utilisateur mem = new Utilisateur() ;
			// try{mem = JdbcUtilisateur.findByPK(membre);}
			// catch(Exception e){System.out.println("erreur:"+e);}

			// on recupere les informations
			String nomExp = request.getParameter("nomExp");
			String adresseExp = request.getParameter("adrExp");
			String cpExp = request.getParameter("cpExp");
			String villeExp = request.getParameter("villeExp");

			String yearE = request.getParameter("yearE");
			String monthE = request.getParameter("monthE");
			String dayE = request.getParameter("dayE");

			String yearA = request.getParameter("yearA");
			String monthA = request.getParameter("monthA");
			String dayA = request.getParameter("dayA");
			String lieuA = request.getParameter("lieuA");
			String heureA = request.getParameter("heureA");

			String yearR = request.getParameter("yearR");
			String monthR = request.getParameter("monthR");
			String dayR = request.getParameter("dayR");
			String lieuR = request.getParameter("lieuR");
			String heureR = request.getParameter("heureR");

			String poste = request.getParameter("poste");
			String ordreDuJour = request.getParameter("ordreDuJour");

			String motifConvocation = request.getParameter("motifConvocation");

			// info du membre connecte dans la BDD
			String nom = "Voinot";
			String prenom = "Amandine";
			String adresse = "14 rue Jean pierre blanchard";
			String ville = "Toulouse";

			@SuppressWarnings("unused")
			generationConvocationPDF facture = new generationConvocationPDF(
					nomExp, adresseExp, villeExp, cpExp, motifConvocation,
					poste, ordreDuJour, prenom, nom, adresse, ville, yearE,
					monthE, dayE, yearA, monthA, dayA, yearR, monthR, dayR,
					lieuA, heureA, lieuR, heureR);

			request.setAttribute("membre", membre);
			request.setAttribute("estPremium", estPremium);
			request.getRequestDispatcher("autresAlibis.jsp").forward(request,
					response);
		}
		response.setContentType("text/html");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}
